home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BCI NET
/
BCI NET Dec 94.iso
/
archives
/
programming
/
c
/
gcc222-1.lha
/
readme.amiga.port
< prev
next >
Wrap
Text File
|
1993-03-08
|
8KB
|
189 lines
Release date: 8 May 1993
This file contains disclaimer and copyright notices as well as a brief
description of unusual or new features of the porting of the GNU C and
C++ compiler version 2.2.2 for the Amiga Sistem.
The porting was done by Davide Pasetto (il dipo) and is (c)Copyright 1993.
The author releases this programming system under the GNU general public
licence that you can find in another file. You MUST read the licence before
you use this programming system and, if you do not accept that licence, you
should delete everything.
The programming system v2.2.2 release 0 is composed of:
GNU C compiler v2.2.2 (c)Copyright GNU
GNU C preprocessor v2.2.2 (c)Copyright GNU
GNU C++ compiler v2.2.2 (c)Copyright GNU
dlink linker v2.06.05 (c)Copyright Matt Dillon
pasm assembler v1.0 (c)Copyright Davide Pasetto (il dipo)
prelink prelinker v2.0 (c)Copyright Davide Pasetto (il dipo)
fdtoin utility v2.0 (c)Copyright Davide Pasetto (il dipo)
genclass utility v1.0 (c)Copyright Davide Pasetto (il dipo)
gnulib.lib v2.0 (c)Copyright Davide Pasetto (il dipo) & GNU
gnulibnf.lib v2.0 (c)Copyright Davide Pasetto (il dipo) & GNU
ansic.lib v2.0 (c)Copyright Davide Pasetto (il dipo)
cplusplus.lib v2.2.2 (c)Copyright GNU
ansic include files v2.0 (c)Copyright Davide Pasetto (il dipo)
cplusplus includes v2.2.2 (c)Copyright GNU
container classes v2.2.2 (c)Copyright GNU
startup files v2.0 (c)Copyright Davide Pasetto (il dipo)
several docs v2.2.2 (c)Copyright GNU
The amigaguide (R) hypertext format docs were converted by makeinfo utility.
All this programs except dlink are compiled with this programming system and
work ONLY under Amiga OS2.0 or higher.
For problems, questions or bug report please contact:
Davide Pasetto (il dipo),
via Gereschi 14, 56127, PISA, ITALY
e-mail: 2:332/602.18
---------------------------- ANSI C LIBRARY ---------------------------
The ansic library contains all the c interface functions described in
the ANSI standard definition, plus some very used BSD and SYS V
functions. The whole library is compiled with GNUC and with -O2
optimization level; this makes the library a little bigger but faster.
------------------------------- Signals -------------------------------
Actually the library knows the existence of 25 signals (all the signal
I can found in ANSI standard or in the UN*X manuals), but by now only
4 can be generated, and they are atached to CTRL_C, CTRL_D, CTRL_E,
CTRL_F. The un*x signals on the Amiga are recognized by an exception
handler commected to the exec task; the signal actually recognized by
this handler are:
SIGKILL (connected to CTRL_C, default is abort() and cannot be changed)
SIGTSTP (connected to CTRL_D, default is stop task processing)
SIGCONT (connected to CTRL_E, default is nothing or resume
task processing if disabled)
SIGINT (connected to CTRL_F).
SIGTSTP and SIGCONT can be used to stop task processing, thus freeing
CPU power, and then continue task processing.
Unfortunatelly exception handling is well supported only by exec, but
it's not supported by the rest of the Amiga OS, so we must use it with
care: we must add the concept of 'atomic section'.
Definition: 'atomic section' is a piece of code that cannot be
interrupted by an externally generated task exception. Atomic sections
must be declared using two new macros defined in signal.h:
ATOMIC_ON
ATOMIC_OFF
The first one is used to start the section, while the second one stops it;
they use a nesting counter, so you must call ATOMIC_OFF as much as you
call ATOMIC_ON. Almost every Amiga OS function must be called in atomic
mode, every functions that could work on global data structures MUST be
called in atomic mode, this means the whole dos.library, intuition and
graphics, but (I think) not the math libraries (for example). C standard
library knows of this exception handling processing, it uses it and does
its best to optimize the atomic section declarations. If you set your own
signal handler routine (using signal call), it will be executed in an
atomic section, so no other signal can happend while it's executing.
Direct usage of the exec exception facility is not supported by the
ansic.lib.
--------------------------- Stack Checking ------------------------------
Stack checking is avaiable by the use of the -mcheck-stack switch. By
default stack checking code implements a dynamic growing and shrinking
stack allocating and freeing memory as needed. It will only abort the
task when no memory can be found. As usual stack cheching adds some
overhead to each call to a program function and to the alloca
function.
The user can sobstitute the default stack checking behaviour by giving
the folowing functions and variabiles:
ULONG ___Stack_Limit this variable contains the current lowest stack
possible value
UWORD ___Stack_Changed this variable is 0 if the stack is the initial
one, non zero if not
___Stack_Init this function initializes stack checking system
___Stack_End this one must free every still allocated stack chunk
___Stack_Overflow this one is called when stack overflows; it has
one parameter: needed minimum stack size; if it
returns it MUST eat his parameter and MUST have
changed a7 to a stack that it AT LEAST as large
as required.
___Stack_Adjust this function is called at the end of each
function when ___Stack_Changed is non zero;
this can do the dynamic stack shrinking.
NOTE: This feature has not been tested very much and I would like to hear any
comment and bug report about it.
--------------------------- Linker options --------------------------------
The linker supported options are:
-Lfloat link with floating point support (it requires
mathieee*.library on execution); default is off.
-Lplus link for cplusplus.
-Lnostdlib link with no stdlibrary (also no floating math supported);
programs linked so will work also under 1.3.
------------------------ Inline function calls --------------
The compiler supports inline function calls to all those Amiga OS
library function that does not get or return double values. The inline
function support is made by the fdtoin program; to use it you must
assign fd: where the fd files are, clib: where the library protos are,
and inline: where you want the program put the inline calls definition
files.
Note that the library calls are inlined ONLY when optimizing (as are
all the inline functions with GNUC 2.2.2).
There is a bug: template is a keyword for C++ compiler, so any
function that has template as argument will give syntax error when
compiled with GNU C++. This is the case of ReadArgs and another dos
function, so you should edit the inline file by hand and change
parameter name.
--------------------- C++ container class constructors ------------
The c++ container class constructor is calles genclass and works like
the GNU shell script described in the library manual: first you must
see if the class needs one or two type definition. In the first case
you use "genclass type [ref or val]" while in the second you must use
"genclass -2 type1 [ref or val] type2 [ref or val]". Remember that ref
means to add a `&' behind the type.
------------------------- Known bugs ---------------------------------
Some bugs still remains in the cplusplus library; expecially the library
test of random number generator failed and I could not understand why.
I think that the floating point subsystem is good becouse that happends also
when compiled for 68882 only, so I cannot understand what happened. I'll
work on this. I found other transitory problems in the stream subsystem of
this library: it happened that it lost one or two chars during reading, and also
in this case I could not understand why. I would like to hear some feedback
from you about this.
------------------------ Future attractions ----------------------------
I'am working on the GNU objective c compiler to create a runtime environment
and this should be released as update 1 to this programming system in 2 weeks.
I'am also working on GNU symbolic debugger but this is a more difficult project
and I cannot say when it will be ready.